// 导游相关的 HTTP 操作
import http from '@/https/http.js'

// 获取导游列表
export const getGuideList = async (params = {}) => {
	try {
		// 参数处理，确保必填字段存在默认值
		const requestParams = {
			OpenId: null,
			GuideName: null,
			Status: null,
			PageNum: 1, // 默认第一页
			PageSize: 10, // 默认每页10条
			TotalNum: 0,
			...params
		}

		const res = await http.post('Mini/Guide/GetList', requestParams)
		return res
	} catch (error) {
		console.error('获取导游列表失败:', error)
		throw error
	}
}

// 创建导游
export const createGuide = async (guideData) => {
	try {
 
		// 设置默认值
		const requestData = {
			GuideId: 0,
			Phone: null,
			Status: 0, // 默认在岗状态
			...guideData
		}

		const res = await http.post('Mini/Guide/Create', requestData)
		return res
	} catch (error) {
		console.error('创建导游失败:', error)
		throw error
	}
}

// 更新导游信息
export const updateGuide = async (guideData) => {
	try {


		// 设置默认值
		const requestData = {
			Phone: null,
			Status: 0, // 默认在岗状态
			...guideData
		}

		const res = await http.post('Mini/Guide/Update', requestData)
		return res
	} catch (error) {
		console.error('更新导游信息失败:', error)
		throw error
	}
}

// 根据ID获取导游详情
export const getGuideById = async (guideId) => {
	try {
		if (!guideId) {
			throw new Error('获取导游详情失败：导游ID不能为空')
		}
		
		// 使用新的Mini/Guide/GetById接口，按照指定的参数格式
		const requestParams = {
			Id: guideId,
			OpenId: 0
		}

		const res = await http.post('Mini/Guide/GetById', requestParams)
		return res
	} catch (error) {
		console.error('获取导游详情失败:', error)
		throw error
	}
}

// 删除导游
export const deleteGuideById = async (guideId) => {
	try {
		if (!guideId) {
			throw new Error('删除导游失败：导游ID不能为空')
		}
		// 参数处理，确保必填字段存在默认值
		const requestParams = {
			OpenId: null,
			Id: guideId
		}

		const res = await http.post('Mini/Guide/DeleteById', requestParams)
		return res
	} catch (error) {
		console.error('删除导游失败:', error)
		throw error
	}
}

// 获取导游下拉列表 - 支持日期筛选
export const GetSelectList = async (params = {}) => {
	try { 
		// 构建符合Mini_carOpenid格式的参数
		const requestParams = { 
			StartDate: params.StartDate || null,
			EndDate: params.EndDate || null
		}

		const res = await http.post('Mini/Guide/GetSelectList', requestParams)
		// 确保返回的是标准的{Value, Label}格式数组
		if (Array.isArray(res)) {
			return res.map(item => ({
				Value: item.value ?? item.id ?? item.guideId ?? null,
				Label: item.label ?? item.name ?? item.guideName ?? item.nickName ?? '未知导游'
			}))
		}
		return []
	} catch (error) {
		console.error('获取导游下拉列表:', error)
		throw error
	}
}

export default {
	getGuideList,
	createGuide,
	updateGuide,
	getGuideById,
	deleteGuideById
}